#pragma once

#include "Vec3.h"
#include "Vec4.m.h"
RSTRUCT()
struct WHENGINE_API SVec4
{
    ROBJECT
public:    

    RFIELD()
    Float X;

    RFIELD()
    Float Y;

    RFIELD()
    Float Z;
    
    RFIELD()
    Float W;

    SVec4();

    SVec4(const SVec3& InXYZ,Float InW);

    SVec4(Float InX,Float InY,Float InZ, Float InW);

    SVec4 operator - () const;

    SVec4 operator * (const Float& Other) const;

    SVec4& operator *= (const Float& Other);

    SVec4 operator / (const Float& Other) const;

    SVec4& operator /= (const Float& Other);

    SVec4 operator - (const SVec4& Other) const;

	SVec4& operator -= (const SVec4& Other);

    SVec4 operator + (const SVec4& Other) const;

	SVec4& operator += (const SVec4& Other);

    void ToFloatArray(float OutArray[4]) const;
};